package com.qjc.demo.algorithm.两数之和;

import java.util.Arrays;

/**
 * @ClassName: TwoNumSumSortedArr
 * @Description: 两数之和
 * 给定一个升序排列的整数数组nums，从数组中找出两个数满足相加之和等于目标数target。
 * 假设每个输入只对应唯一的答案，而且不可以重复使用相同的元素。
 * 返回两数的下标值，以数组形式返回
 * @Author: qjc
 * @Date: 2022/5/6 9:39 AM
 */
public class TwoNumSumSortedArr {

    // 使用双指针法，算法复杂度O(n)
    public static int[] solution1(int[] nums, int target) {
        int low = 0, high = nums.length - 1;
        while (low < high) {
            int sum = nums[low] + nums[high];
            if (sum == target) {
                return new int[]{low, high};
            } else if (sum < target) {
                low++;
            } else {
                high--;
            }
        }
        return new int[0];
    }

    public static void main(String[] args) {
        System.out.println(Arrays.toString(solution1(new int[]{1, 2, 3, 4, 5, 6, 7}, 8)));
    }

}
